package com.myscala.scala

/*
类型转化
 */
object TypeTrans {
  def main(args: Array[String]): Unit = {
    /*
    自动类型转换
    在计算的过程中,值类型会进行自动转换,根据范围由小到大
    Byte->Short->Int->Long->Float->Double
                  ↑
                 Char
     */
    var a: Byte = 123
    var b: Short = 122
    var c: Char = 'a'
    var d: Int = 111
    var e: Long = 333L
    var f: Float = 102.3f
    var g: Double = 3.2
    println(a+b,(a+b).getClass)
    println(a+c,(a+c).getClass)
    println(d+e,(d+e).getClass)
    println(d+g,(d+g).getClass)
    println(e+f,(e+f).getClass)

    /*
    强制类型转换
    范围大的数据类型通过 .toxxx 实现向范围小的数据类型强制转换,注意可能会造成精度的缺失.
     */
    val h: Int = 12
    val i: Double =12.2
    val j: Int = (h+i).toInt
    println(j,j.getClass)

    /*
    值类型和String类型之间的相互转换
     */
    //值类型转换为String类型有两种方式,分别是a+"" 和 a.toString
    val x: Int = 23
    val y: String = x.toString
    println(x+"",(x+"").getClass)
    println(y,y.getClass)
    val z: Int = 22
    println(z.toString,z.toString.getClass)

  }

}
